home *** CD-ROM | disk | FTP | other *** search
- #!/bin/sh
-
- # disable processing of 90chvt and 99video.
- # s2ram and s2disk handle all this stuff internally.
- uswsusp_hooks()
- {
- disablehook 99video "disabled by uswsusp"
- }
-
- # Since we disabled 99video, we need to take responsibility for proper
- # quirk handling. s2ram handles all common video quirks internally,
- # so all we have to do is translate the HAL standard options to s2ram options.
- uswsusp_get_quirks()
- {
- OPTS=""
- ACPI_SLEEP=0
- for opt in $PM_CMDLINE; do
- case "${opt##--quirk-}" in # just quirks, please
- dpms-on) ;; # no-op
- dpms-suspend) ;; # no-op
- radeon-off) OPTS="$OPTS --radeontool" ;;
- reset-brightness) ;; # no-op
- s3-bios) ACPI_SLEEP=$(($ACPI_SLEEP + 1)) ;;
- s3-mode) ACPI_SLEEP=$(($ACPI_SLEEP + 2)) ;;
- vbe-post) OPTS="$OPTS --vbe_post" ;;
- vbemode-restore) OPTS="$OPTS --vbe_mode" ;;
- vbestate-restore) OPTS="$OPTS --vbe_save" ;;
- vga-mode3) ;; # no-op
- save-pci) OPTS="$OPTS --pci_save" ;;
- none) QUIRK_NONE="true" ;;
- *) continue ;;
- esac
- done
- [ $ACPI_SLEEP -ne 0 ] && OPTS="$OPTS --acpi_sleep $ACPI_SLEEP"
- # if we were told to ignore quirks, do so.
- # This is arguably not the best way to do things, but...
- [ "$QUIRK_NONE" = "true" ] && OPTS=""
- }
-
- # Since we disabled 99video, we also need to handle displaying
- # help info for the quirks we handle.
- uswsusp_help()
- {
- echo # first echo makes it look nicer.
- echo "s2ram video quirk handler options:"
- echo
- echo " --quirk-radeon-off"
- echo " --quirk-s3-bios"
- echo " --quirk-s3-mode"
- echo " --quirk-vbe-post"
- echo " --quirk-vbemode-restore"
- echo " --quirk-vbestate-restore"
- echo " --quirk-save-pci"
- echo " --quirk-none"
- }
-
- # This idiom is used for all sleep methods. Only declare the actual
- # do_ method if:
- # 1: some other sleep module has not already done so, and
- # 2: this sleep method can actually work on this system.
- #
- # For suspend, if SUSPEND_MODULE is set then something else has already
- # implemented do_suspend. We could just check to see of do_suspend was
- # already declared using command_exists, but using a dedicated environment
- # variable makes it easier to debug when we have to know what sleep module
- # ended up claiming ownership of a given sleep method.
- if [ -z "$SUSPEND_MODULE" ] && command_exists s2ram && \
- ( grep -q mem /sys/power/state || \
- ( [ -c /dev/pmu ] && check_suspend_pmu; ); ); then
- SUSPEND_MODULE="uswsusp"
- do_suspend()
- {
- uswsusp_get_quirks
- s2ram --force $OPTS
- }
- if [ "$METHOD" = "suspend" ]; then
- add_before_hooks uswsusp_hooks
- add_module_help uswsusp_help
- fi
- fi
-
- if [ -z "$HIBERNATE_MODULE" ] && \
- [ -f /sys/power/disk ] && \
- grep -q disk /sys/power/state && \
- [ -c /dev/snapshot ] &&
- command_exists s2disk; then
- HIBERNATE_MODULE="uswsusp"
- do_hibernate()
- {
- s2disk
- }
- fi
-
- if [ -z "$SUSPEND_HYBRID_MODULE" ] &&
- grep -q mem /sys/power/state && \
- command_exists s2both && \
- check_hibernate; then
- SUSPEND_HYBRID_MODULE="uswsusp"
- do_suspend_hybrid()
- {
- uswsusp_get_quirks
- s2both --force $OPTS
- }
- if [ "$METHOD" = "suspend_hybrid" ]; then
- add_before_hooks uswsusp_hooks
- add_module_help uswsusp_help
- fi
- fi
-